package com.weyoung.common.model.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.weyoung.common.handler.ListToVarcharTypeHandler;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;
import java.util.List;

/**
 * 用户传记信息实体类
 * 注意：MyBatis-Plus 默认采用驼峰命名规则，即数据库表中的下划线命名会自动映射到实体类的驼峰命名。
 * 例如：数据库表字段 biography_id 会自动映射到实体类的 biographyId 字段。
 * 如果实体类字段名和数据库表字段名不满足默认的驼峰映射规则，可使用 @TableField 注解指定具体的数据库表字段名。
 */
@Data
@TableName("biography")
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Biography {

    /**
     * 传记主键id，自增长唯一标识记录
     */
    @TableId
    private Integer biographyId;

    /**
     * 关联user表的用户主键id
     */
    @TableField("user_id")
    private Integer userId;

    /**
     * 关联家族表的家族主键id
     */
    @TableField("family_id")
    private String familyId;

    /**
     * 事件日期
     */
    @TableField("event_date")
    private Date eventDate;

    /**
     * 传记标题
     */
    @TableField("biography_title")
    private String biographyTitle;

    /**
     * 传记内容
     */
    @TableField("biography_content")
    private String biographyContent;

    /**
     * 创建日期
     */
    @TableField(value = "create_date",fill = FieldFill.INSERT)
    private Date createDate;

    /**
     * 更新时间
     */
    @TableField(value = "update_date",fill = FieldFill.INSERT_UPDATE)
    private String updateDate;

    /**
     * 审批状态，0-待审批，1-已通过，2-未通过
     */
    @TableField("approval_status")
    private String approvalStatus;

    /**
     * 是否删除，0-未删除，1-已删除
     */
    @TableField(value = "is_deleted", fill = FieldFill.INSERT)
    private String isDeleted;
    /**
     * 图片
     */
    @TableField(value = "image_url_list", typeHandler = ListToVarcharTypeHandler.class)
    private List<String> imageUrlList;
}    